{
 "cells": [
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "# 一、调用的包了解下"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 1,
   "metadata": {},
   "outputs": [],
   "source": [
    "#调用的包信息\n",
    "import re  \n",
    "import pickle\n",
    "import random\n",
    "import pandas as pd\n",
    "import numpy as np\n",
    "import jieba\n",
    "\n",
    "import matplotlib.pyplot as plt\n",
    "import seaborn as sns\n",
    "from wordcloud import WordCloud, STOPWORDS\n",
    "\n",
    "from sklearn.svm import SVC\n",
    "from sklearn import preprocessing, decomposition, model_selection, metrics, pipeline\n",
    "from sklearn.model_selection import GridSearchCV\n",
    "from sklearn.feature_extraction.text import TfidfVectorizer, CountVectorizer\n",
    "from sklearn.decomposition import TruncatedSVD\n",
    "from sklearn.linear_model import LogisticRegression\n",
    "from sklearn.model_selection import train_test_split\n",
    "from sklearn.metrics import classification_report\n",
    "from sklearn.naive_bayes import MultinomialNB as MNB\n",
    "from sklearn.model_selection import train_test_split"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "# 二、探索性分析"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "## 1、获取原始数据"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 3,
   "metadata": {},
   "outputs": [],
   "source": [
    "with open(r'D:\\分析实战\\京东评论文本挖掘\\data\\京东评论数据.csv', encoding='utf-8') as f:\n",
    "    data = pd.read_csv(f)"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "## 2、数据观测"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 4,
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "Data Overview:\n",
      "    sku_id                                   _id item_name   comment_id  \\\n",
      "0  7534113  03b51aa9-2b5e-41c3-a40b-343164a1d23a   comment  11801751173   \n",
      "1  7534113  03b51aa9-2b5e-41c3-a40b-343164a1d23a   comment  11525358140   \n",
      "2  7534113  03b51aa9-2b5e-41c3-a40b-343164a1d23a   comment  11787681311   \n",
      "3  8240587  082df194-97f0-425e-85ac-8596344114e6   comment  11726613552   \n",
      "\n",
      "                                             content        creation_time  \\\n",
      "0                                 还可以刷脸解锁，帮朋友买的，她很满意  2018-08-13 12:24:59   \n",
      "1  第一次买vivo，真心不错，1498的机子，没想到照相很清晰，性价比很高，买值了，还送了小音...  2018-05-27 17:49:17   \n",
      "2                                         手机好用快递送的快。  2018-08-09 07:17:37   \n",
      "3  手机收到。外观设计很好！美观大方。我喜欢！一直使用华为手机。从荣耀七，荣耀八，荣耀九。反正一...  2018-07-21 13:29:44   \n",
      "\n",
      "   reply_count  score  useful_vote_count  useless_vote_count  \\\n",
      "0            0      5                  0                   0   \n",
      "1            7      5                 19                   0   \n",
      "2            0      5                  0                   0   \n",
      "3            4      5                  8                   0   \n",
      "\n",
      "          ...          user_province  nickname user_level_name user_client  \\\n",
      "0         ...                    NaN     k***0          PLUS会员           2   \n",
      "1         ...                    NaN     呢***呐          PLUS会员           4   \n",
      "2         ...                    NaN     V***c            银牌会员           4   \n",
      "3         ...                    NaN     8***3            金牌会员           4   \n",
      "\n",
      "   user_client_show is_mobile  days       reference_time after_days  \\\n",
      "0     来自京东iPhone客户端       1.0   4.0  2018-08-09 13:38:15        0.0   \n",
      "1    来自京东Android客户端       1.0   5.0  2018-05-22 09:32:37        0.0   \n",
      "2    来自京东Android客户端       1.0   3.0  2018-08-06 18:45:59        0.0   \n",
      "3    来自京东Android客户端       1.0   1.0  2018-07-20 06:14:02        0.0   \n",
      "\n",
      "   after_user_comment  \n",
      "0          NO_MESSAGE  \n",
      "1          NO_MESSAGE  \n",
      "2          NO_MESSAGE  \n",
      "3          NO_MESSAGE  \n",
      "\n",
      "[4 rows x 21 columns]\n",
      "------------------------------\n",
      "Data Information\n",
      "<class 'pandas.core.frame.DataFrame'>\n",
      "RangeIndex: 3637 entries, 0 to 3636\n",
      "Data columns (total 21 columns):\n",
      "sku_id                3637 non-null int64\n",
      "_id                   3637 non-null object\n",
      "item_name             3637 non-null object\n",
      "comment_id            3637 non-null int64\n",
      "content               3637 non-null object\n",
      "creation_time         3637 non-null object\n",
      "reply_count           3637 non-null int64\n",
      "score                 3637 non-null int64\n",
      "useful_vote_count     3637 non-null int64\n",
      "useless_vote_count    3637 non-null int64\n",
      "user_level_id         3637 non-null int64\n",
      "user_province         0 non-null float64\n",
      "nickname              3637 non-null object\n",
      "user_level_name       3637 non-null object\n",
      "user_client           3637 non-null int64\n",
      "user_client_show      3462 non-null object\n",
      "is_mobile             3636 non-null float64\n",
      "days                  3636 non-null float64\n",
      "reference_time        3636 non-null object\n",
      "after_days            3636 non-null float64\n",
      "after_user_comment    3636 non-null object\n",
      "dtypes: float64(4), int64(8), object(9)\n",
      "memory usage: 596.8+ KB\n",
      "None\n",
      "----------------------------------------\n",
      "Data DESC:\n",
      "             sku_id    comment_id  reply_count        score  \\\n",
      "count  3.637000e+03  3.637000e+03  3637.000000  3637.000000   \n",
      "mean   7.936312e+09  1.161979e+10     6.291724     4.880946   \n",
      "std    1.165137e+10  2.520618e+08    41.624571     0.591341   \n",
      "min    1.592994e+06  1.045844e+10     0.000000     1.000000   \n",
      "25%    5.920651e+06  1.155459e+10     0.000000     5.000000   \n",
      "50%    7.651903e+06  1.174154e+10     0.000000     5.000000   \n",
      "75%    2.034912e+10  1.178850e+10     1.000000     5.000000   \n",
      "max    3.032369e+10  1.180889e+10  1355.000000     5.000000   \n",
      "\n",
      "       useful_vote_count  useless_vote_count  user_level_id  user_province  \\\n",
      "count        3637.000000              3637.0    3637.000000            0.0   \n",
      "mean           13.532307                 0.0      75.692329            NaN   \n",
      "std            72.564442                 0.0      21.125683            NaN   \n",
      "min             0.000000                 0.0      50.000000            NaN   \n",
      "25%             0.000000                 0.0      61.000000            NaN   \n",
      "50%             0.000000                 0.0      62.000000            NaN   \n",
      "75%             2.000000                 0.0     105.000000            NaN   \n",
      "max          2318.000000                 0.0     105.000000            NaN   \n",
      "\n",
      "       user_client    is_mobile         days   after_days  \n",
      "count  3637.000000  3636.000000  3636.000000  3636.000000  \n",
      "mean      4.480066     0.894114     9.451045     1.475248  \n",
      "std       4.644212     0.307733    13.169849     9.862867  \n",
      "min       0.000000     0.000000     0.000000     0.000000  \n",
      "25%       2.000000     1.000000     2.000000     0.000000  \n",
      "50%       4.000000     1.000000     4.000000     0.000000  \n",
      "75%       4.000000     1.000000    11.000000     0.000000  \n",
      "max      29.000000     1.000000   191.000000   191.000000  \n",
      "------------------------------------------------------------\n"
     ]
    }
   ],
   "source": [
    "#数据审核及矫正\n",
    "def DataOverview(data):\n",
    "    print('Data Overview:')\n",
    "    print(data.head(4))\n",
    "    print('-'*30)\n",
    "    print('Data Information')\n",
    "    print(data.info())\n",
    "    print('-'*40)\n",
    "    print('Data DESC:')\n",
    "    print(data.describe())\n",
    "    print('-'*60)\n",
    "\n",
    "DataOverview(data)"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "#### 数据集大小21*3637；时间字段为数值型需转化为日期型；“score“，”reply_count\"字段存在样本不均衡的情况。"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 5,
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "NA Cols:\n",
      "sku_id                False\n",
      "_id                   False\n",
      "item_name             False\n",
      "comment_id            False\n",
      "content               False\n",
      "creation_time         False\n",
      "reply_count           False\n",
      "score                 False\n",
      "useful_vote_count     False\n",
      "useless_vote_count    False\n",
      "user_level_id         False\n",
      "user_province          True\n",
      "nickname              False\n",
      "user_level_name       False\n",
      "user_client           False\n",
      "user_client_show       True\n",
      "is_mobile              True\n",
      "days                   True\n",
      "reference_time         True\n",
      "after_days             True\n",
      "after_user_comment     True\n",
      "dtype: bool\n",
      "------------------------------\n",
      "NA Recors:\n",
      "Total number of NA lines is: 3637\n",
      "           sku_id                                   _id item_name  \\\n",
      "0         7534113  03b51aa9-2b5e-41c3-a40b-343164a1d23a   comment   \n",
      "1         7534113  03b51aa9-2b5e-41c3-a40b-343164a1d23a   comment   \n",
      "2         7534113  03b51aa9-2b5e-41c3-a40b-343164a1d23a   comment   \n",
      "3         8240587  082df194-97f0-425e-85ac-8596344114e6   comment   \n",
      "4         5942439  dce41ae6-aed6-480e-a4e2-705dfb515c71   comment   \n",
      "5         5089275  f654a249-bff4-4e92-8fea-c3bd07c7eade   comment   \n",
      "6         7081550  9155a779-a366-4b36-872c-315a647d3af1   comment   \n",
      "7         5663902  29a79fe8-8c2f-4560-8f5b-d7ff8cf4cc64   comment   \n",
      "8         7283905  a8a40cf3-dc2c-489d-9664-69cd400eedbd   comment   \n",
      "9         5001213  5d08d842-bb0d-41ae-b7d7-ea5e0ac015a3   comment   \n",
      "10        8344046  fa9fbd69-445b-4ad7-b652-c1d5e2bff5b7   comment   \n",
      "11        7534113  03b51aa9-2b5e-41c3-a40b-343164a1d23a   comment   \n",
      "12        8240587  082df194-97f0-425e-85ac-8596344114e6   comment   \n",
      "13        5942439  dce41ae6-aed6-480e-a4e2-705dfb515c71   comment   \n",
      "14        5089275  f654a249-bff4-4e92-8fea-c3bd07c7eade   comment   \n",
      "15        7081550  9155a779-a366-4b36-872c-315a647d3af1   comment   \n",
      "16        5663902  29a79fe8-8c2f-4560-8f5b-d7ff8cf4cc64   comment   \n",
      "17        7283905  a8a40cf3-dc2c-489d-9664-69cd400eedbd   comment   \n",
      "18        5001213  5d08d842-bb0d-41ae-b7d7-ea5e0ac015a3   comment   \n",
      "19        8344046  fa9fbd69-445b-4ad7-b652-c1d5e2bff5b7   comment   \n",
      "20        7534113  03b51aa9-2b5e-41c3-a40b-343164a1d23a   comment   \n",
      "21        8240587  082df194-97f0-425e-85ac-8596344114e6   comment   \n",
      "22        5942439  dce41ae6-aed6-480e-a4e2-705dfb515c71   comment   \n",
      "23        5089275  f654a249-bff4-4e92-8fea-c3bd07c7eade   comment   \n",
      "24        7081550  9155a779-a366-4b36-872c-315a647d3af1   comment   \n",
      "25        5663902  29a79fe8-8c2f-4560-8f5b-d7ff8cf4cc64   comment   \n",
      "26        5089267  00694ec0-b2df-4c64-8cc3-17e1c851b93b   comment   \n",
      "27        7651927  af72abbf-9bb3-49a5-961d-cc4a1c9d88b6   comment   \n",
      "28        7321794  83f54049-e603-4979-872d-cf5a6bfd9305   comment   \n",
      "29        7437768  4ed77e9d-2beb-4232-9994-055de2fa0c42   comment   \n",
      "...           ...                                   ...       ...   \n",
      "3607  29659404127  d6305c3c-fc2d-430f-81ed-f92dcd0c56ae   comment   \n",
      "3608      7283905  596fad85-a911-43d9-9987-ce8c92fe3206   comment   \n",
      "3609      5089275  398ddc35-7777-4e32-a298-1ce1fe81124d   comment   \n",
      "3610  27357030125  567b940b-b014-4a0c-af46-b803df8032bc   comment   \n",
      "3611  29002078202  f0142eaf-b49f-4a0a-950b-29c4dd643850   comment   \n",
      "3612      5663902  28d7b27d-755f-4458-8ad9-df915f8846b9   comment   \n",
      "3613      3901175  39f33d8c-f5b3-474b-92ff-3023bfc1e644   comment   \n",
      "3614      6610412  f183a78b-85a0-4fb4-a0d4-2dde7c49de03   comment   \n",
      "3615      7321794  1c3bc111-f4d0-47d9-9370-b6fdbd3294c6   comment   \n",
      "3616  19078286246  d2c65ec6-6309-42cd-bb98-eb4cebf7a61b   comment   \n",
      "3617      5375693  8505e914-f94c-4b46-b48d-3fe6b6eb90e5   comment   \n",
      "3618      7694047  cb067115-4ab8-4f64-9c3e-51bdc752ef34   comment   \n",
      "3619      7534113  2e00c1ee-1538-4a25-ac04-f042d2d7c15b   comment   \n",
      "3620  25531193076  572e26a4-264d-4ec9-a327-aaad653cce2b   comment   \n",
      "3621      7437788  7af73fd1-1840-4c2c-872b-462d65fdcb9b   comment   \n",
      "3622  28672267256  49afdda6-9a01-4855-b937-a9addc1f6bba   comment   \n",
      "3623  25774787882  c01a338e-9b34-47af-a481-632eec7427f2   comment   \n",
      "3624      5402840  4ccb8604-4eda-430b-b2fd-0d1893fd5f4c   comment   \n",
      "3625      8239683  b12ffb70-fcc2-473c-a98b-bfbdf1ab4002   comment   \n",
      "3626  25834204287  d680d2e1-9196-487b-9f3c-5b1ab117920f   comment   \n",
      "3627  28082716822  bf4a7327-cafb-4a5b-90b4-083267f384e8   comment   \n",
      "3628  21135280362  7a45cbaf-8304-49ac-8792-961501c73d3a   comment   \n",
      "3629  26266694915  99bdbcab-213d-499d-835f-013ddb9332c9   comment   \n",
      "3630      5853593  bb2bd651-2898-4a36-817a-a801ea698e6a   comment   \n",
      "3631  21845662740  8d08e0df-d783-4bac-ac60-68de70ea71ef   comment   \n",
      "3632      7651903  d4121721-d074-4fea-bc42-2e13c89be548   comment   \n",
      "3633  15612619462  8738387c-0409-47eb-9ff6-051b5801cc3d   comment   \n",
      "3634  11107032701  d0455136-69eb-4246-80d1-fa7c945347c4   comment   \n",
      "3635  29619588672  40e73e8f-611b-404b-89b9-7082f6a3840b   comment   \n",
      "3636      7846413  6143f244-717f-487f-9a6a-171642f54230   comment   \n",
      "\n",
      "       comment_id                                            content  \\\n",
      "0     11801751173                                 还可以刷脸解锁，帮朋友买的，她很满意   \n",
      "1     11525358140  第一次买vivo，真心不错，1498的机子，没想到照相很清晰，性价比很高，买值了，还送了小音...   \n",
      "2     11787681311                                         手机好用快递送的快。   \n",
      "3     11726613552  手机收到。外观设计很好！美观大方。我喜欢！一直使用华为手机。从荣耀七，荣耀八，荣耀九。反正一...   \n",
      "4     11795202075                  收到了，挺好的，声音大，电池大，好用发货速度快，非常满意，好好好。   \n",
      "5     10961004700  本来觉得双十一还会便宜的，想不到和11月初的价格差不多，想想还是感觉入手了，早买早享受。我的...   \n",
      "6     11438336472  没有真正意义上的窄边框，不过已经不错了，手机流畅，另外还有51G空间可用，同时试了下近距拍摄...   \n",
      "7     11370481107                       幻夜黑颜色很漂亮，2.5D屏幕，圆润。2K屏很清晰，惊艳   \n",
      "8     11548650247  特地用了一段时间才来评价，这手机值得这个价钱，打游戏还行，就是电池很不耐用，摄像头也很突出，...   \n",
      "9     10799146991  机器没得说，价格也合理，虽说仍有不足，但还是比较满意的，首发就抢到了，暂时发现的不足就是扬声...   \n",
      "10    11777961700  中框真空镀3D镭雕，后盖复合材料丝印工艺，属实感十足，6.20英寸2246*1080分辨率的...   \n",
      "11    11561489668                             手机很好用，京东快递就是快，手机一段时间了。   \n",
      "12    11723524136  1 京东确实牛 手机下单后不到24小时就送到手。2  这款手机确实好，屏幕大，手感好，操作方...   \n",
      "13    11787733316                       收到货，声音很大，功能也多，适合老人用，就是重量有点重，   \n",
      "14    11210257843  纠结了很久还是买了8p，对比很多方面，拍照超级好看，很信任京东，物流很快虽然是别的地方但依旧...   \n",
      "15    11733021166  购买前经过选购，对比，最终买了这个机器机型，收货很快，收到初步检查也没问题，速度肯定快，因为...   \n",
      "16    11546586771  手机很快就收到了，实物与商品介绍一样，手感和外观上看着还不错。因为一直用的都是华为手机，打开...   \n",
      "17    11456248281  27号下的单，今天收到1星期内，坐标河南商丘，手机是武汉仓过来的。充电头是5V2A的 不支持...   \n",
      "18    10814446515  今天刚收到！\\n看到京东的快递包装盒，我内心是一群奔腾而过的！几千块钱的物品包装，没有防压提...   \n",
      "19    11777632597  在浏览页面时，我没有立即购买，关注了这个手机有一段时间，这次直接下单了，首先客服服务真心不错...   \n",
      "20    11793405123                          宝贝收到了，给老妈买的，老妈爱不释手，很喜欢，大爱   \n",
      "21    11720758727                                     刚到手 大小手感 都非常不错   \n",
      "22    11790570542                         用着目前还可以，就是不知道可以用多久。希望久一些吧。   \n",
      "23    10901229032  物流速度很快，一大早就收到了，试用了一下午，说说感觉吧，我是把我的5S换了，5用了3年了，手...   \n",
      "24    11745466772  上午下单，7个小时就到了，等的很激动，拿到手机也十分惊喜，哈哈，就是没有广告上的后壳艳，吃鸡...   \n",
      "25    11294632867  手机还不错，大气上档次，反应灵敏，手感很好！一直信赖华为产品！华为4x用了两部，华为荣耀6一...   \n",
      "26    10945146582  很不错，京东促销厉害4777.还是两百多京豆很划算，玻璃很有质感，想当初买个16G的ipho...   \n",
      "27    11807124270  经常用小米的手机，红米小米各类品牌买了好多个。红米6，这款手机配置好，运行很流畅，比我的小米...   \n",
      "28    11474503704  外观很漂亮 很小巧 值得一说的是指纹解锁真的快到没朋友 这手机帮我老板娘买的 她很喜欢 分辨率很清   \n",
      "29    11789884240                正品，第一次在京东买手机，速度，手感都很好，值得入手，买给父母的好首选   \n",
      "...           ...                                                ...   \n",
      "3607  11703295729                                         此用户未填写评价内容   \n",
      "3608  11800541753                                         此用户未填写评价内容   \n",
      "3609  10816740852  一下买俩，经常在京东买手机，放下值得信赖，月消费5万以上，希望京东商城越做越好，产品手机质量...   \n",
      "3610  11453557486                                         此用户未填写评价内容   \n",
      "3611  11734106254                                          手机好用，速度，?   \n",
      "3612  11773886251  一号下午提货，到今晚4号止充电二次，现在又要充电第三次了，在我们公司同事介绍这款以是第四个手...   \n",
      "3613  11714411642  手机还没用，不知怎么样，但是京东客服态度真的不行，问一句半天回你一句，而且都是答非所问的，在...   \n",
      "3614  11771281376                     手机手感不错，就是上面屏幕好丑，中间凹下去就是为了个摄像头。   \n",
      "3615  11776714962  手机很好用，运行速度很快，老公关注这款手机很久了，到手后很喜欢，京东的物流也很给力，早上买的...   \n",
      "3616  11248527572         手机很不错，是一手，物流也很快，客服态度很好，必须给好评，以后换手机还要来这家店买。   \n",
      "3617  11779076203                       货到的很快，一直在京东买东西，相信京东的质量是美好的事情   \n",
      "3618  11754367669  华为9i已收到，快递超快，昨天晚上下单，今天中午已经收到了，手机刚开始用，各方面都觉得几好，...   \n",
      "3619  11791146558                                     手机很漂亮，功能强大，很满意   \n",
      "3620  11596689340                      手机很好用，比实体店便宜，京东方便快捷，卖家服务好，全五分   \n",
      "3621  11686559649  小米8新旗舰手机，收到货第一眼感觉外观很棒，刘海屏皇起来也不错。机身很圆滑，背部手感细腻，光...   \n",
      "3622  11723224078                                  唯一的不满之处就是手机屏没有原机膜   \n",
      "3623  11705585861                                          不错不错看以后怎样   \n",
      "3624  11791873509                                             老人用开心?   \n",
      "3625  11738643552  东西很好用，感觉手感可以，就是送的钢化模不是防蓝光全面平的，手感特别好，不过再用用，一千块钱...   \n",
      "3626  11700898327                            咨询问题答复很及时，手机收到了行货 包装仔细。   \n",
      "3627  11762161734                                         东西非常好老婆很喜欢   \n",
      "3628  11689315154                                      给老爸买的，用了还可以吧。   \n",
      "3629  11783665736                                         充电很快，手机也可以   \n",
      "3630  11705257439                                             好用玩游戏快   \n",
      "3631  11578402895                送货速度超快，手机大小合适。系统流畅，拍照功能不错。其他还有待使用体验   \n",
      "3632  11807124270  经常用小米的手机，红米小米各类品牌买了好多个。红米6，这款手机配置好，运行很流畅，比我的小米...   \n",
      "3633  11785452614                          特别，手机电池抗用，屏幕没有划痕，这次购物非常满意   \n",
      "3634  11189385869                                     先用着，暂时不错。没有问题。   \n",
      "3635  11802613710                                         手机拍照不清晰，很朦   \n",
      "3636  11647138152                                        速度很快，用起来很舒服   \n",
      "\n",
      "            creation_time  reply_count  score  useful_vote_count  \\\n",
      "0     2018-08-13 12:24:59            0      5                  0   \n",
      "1     2018-05-27 17:49:17            7      5                 19   \n",
      "2     2018-08-09 07:17:37            0      5                  0   \n",
      "3     2018-07-21 13:29:44            4      5                  8   \n",
      "4     2018-08-11 11:51:26            0      5                  0   \n",
      "5     2017-11-12 23:52:09            8      5                 15   \n",
      "6     2018-04-28 20:19:18            5      5                 20   \n",
      "7     2018-04-04 20:11:48            5      5                  5   \n",
      "8     2018-06-03 13:26:09            5      5                  8   \n",
      "9     2017-09-20 20:10:58           98      5                338   \n",
      "10    2018-08-06 08:58:25            0      5                  0   \n",
      "11    2018-06-06 15:47:06           14      5                 21   \n",
      "12    2018-07-20 14:30:44            1      5                 11   \n",
      "13    2018-08-09 07:55:07            0      5                  0   \n",
      "14    2018-02-01 19:34:55           10      5                 35   \n",
      "15    2018-07-23 12:30:25            0      5                  1   \n",
      "16    2018-06-02 21:51:59            1      5                  0   \n",
      "17    2018-05-05 11:28:36           17      5                 20   \n",
      "18    2017-09-26 15:19:41           10      5                 15   \n",
      "19    2018-08-06 01:09:00            0      5                  2   \n",
      "20    2018-08-10 19:26:34            0      5                  0   \n",
      "21    2018-07-19 17:13:06           18      5                 40   \n",
      "22    2018-08-09 22:11:24            0      5                  0   \n",
      "23    2017-10-28 19:32:45          169      5                479   \n",
      "24    2018-07-26 23:40:04            9      5                 14   \n",
      "25    2018-03-09 15:06:58            2      5                 14   \n",
      "26    2017-11-09 18:49:07           15      5                 53   \n",
      "27    2018-08-14 23:39:11            0      5                  0   \n",
      "28    2018-05-11 14:13:22            5      5                 12   \n",
      "29    2018-08-09 18:23:22            0      5                  0   \n",
      "...                   ...          ...    ...                ...   \n",
      "3607  2018-07-14 14:38:00            0      5                  1   \n",
      "3608  2018-08-13 00:08:51            0      5                  0   \n",
      "3609  2017-09-27 12:43:13           78      5                129   \n",
      "3610  2018-05-04 12:22:07            0      5                  0   \n",
      "3611  2018-07-23 17:36:18            0      5                  0   \n",
      "3612  2018-08-04 20:34:21            0      5                  0   \n",
      "3613  2018-07-17 19:21:59            1      1                  0   \n",
      "3614  2018-08-04 00:14:03            0      5                  0   \n",
      "3615  2018-08-05 18:37:08            0      5                  0   \n",
      "3616  2018-02-16 21:35:15            1      5                  2   \n",
      "3617  2018-08-06 13:43:26            0      5                  0   \n",
      "3618  2018-07-29 20:47:00            0      5                  0   \n",
      "3619  2018-08-10 08:28:05            0      5                  0   \n",
      "3620  2018-06-15 18:55:57            0      5                  1   \n",
      "3621  2018-07-09 12:36:38            1      5                  9   \n",
      "3622  2018-07-20 12:56:44            0      5                  0   \n",
      "3623  2018-07-15 10:03:22            1      5                  0   \n",
      "3624  2018-08-10 11:31:15            0      5                  0   \n",
      "3625  2018-07-24 23:23:53            0      5                  0   \n",
      "3626  2018-07-13 19:11:49            1      5                  0   \n",
      "3627  2018-08-01 09:59:30            0      5                  0   \n",
      "3628  2018-07-10 10:02:24            0      5                  0   \n",
      "3629  2018-08-07 20:29:01            0      5                  0   \n",
      "3630  2018-07-15 08:27:02            0      5                  1   \n",
      "3631  2018-06-11 05:09:34            0      5                  1   \n",
      "3632  2018-08-14 23:39:11            0      5                  0   \n",
      "3633  2018-08-08 12:36:32            1      5                  0   \n",
      "3634  2018-01-25 16:38:45            0      5                  0   \n",
      "3635  2018-08-13 16:42:48            0      5                  0   \n",
      "3636  2018-06-27 13:22:08            0      5                  0   \n",
      "\n",
      "      useless_vote_count                        ...                          \\\n",
      "0                      0                        ...                           \n",
      "1                      0                        ...                           \n",
      "2                      0                        ...                           \n",
      "3                      0                        ...                           \n",
      "4                      0                        ...                           \n",
      "5                      0                        ...                           \n",
      "6                      0                        ...                           \n",
      "7                      0                        ...                           \n",
      "8                      0                        ...                           \n",
      "9                      0                        ...                           \n",
      "10                     0                        ...                           \n",
      "11                     0                        ...                           \n",
      "12                     0                        ...                           \n",
      "13                     0                        ...                           \n",
      "14                     0                        ...                           \n",
      "15                     0                        ...                           \n",
      "16                     0                        ...                           \n",
      "17                     0                        ...                           \n",
      "18                     0                        ...                           \n",
      "19                     0                        ...                           \n",
      "20                     0                        ...                           \n",
      "21                     0                        ...                           \n",
      "22                     0                        ...                           \n",
      "23                     0                        ...                           \n",
      "24                     0                        ...                           \n",
      "25                     0                        ...                           \n",
      "26                     0                        ...                           \n",
      "27                     0                        ...                           \n",
      "28                     0                        ...                           \n",
      "29                     0                        ...                           \n",
      "...                  ...                        ...                           \n",
      "3607                   0                        ...                           \n",
      "3608                   0                        ...                           \n",
      "3609                   0                        ...                           \n",
      "3610                   0                        ...                           \n",
      "3611                   0                        ...                           \n",
      "3612                   0                        ...                           \n",
      "3613                   0                        ...                           \n",
      "3614                   0                        ...                           \n",
      "3615                   0                        ...                           \n",
      "3616                   0                        ...                           \n",
      "3617                   0                        ...                           \n",
      "3618                   0                        ...                           \n",
      "3619                   0                        ...                           \n",
      "3620                   0                        ...                           \n",
      "3621                   0                        ...                           \n",
      "3622                   0                        ...                           \n",
      "3623                   0                        ...                           \n",
      "3624                   0                        ...                           \n",
      "3625                   0                        ...                           \n",
      "3626                   0                        ...                           \n",
      "3627                   0                        ...                           \n",
      "3628                   0                        ...                           \n",
      "3629                   0                        ...                           \n",
      "3630                   0                        ...                           \n",
      "3631                   0                        ...                           \n",
      "3632                   0                        ...                           \n",
      "3633                   0                        ...                           \n",
      "3634                   0                        ...                           \n",
      "3635                   0                        ...                           \n",
      "3636                   0                        ...                           \n",
      "\n",
      "      user_province         nickname user_level_name user_client  \\\n",
      "0               NaN            k***0          PLUS会员           2   \n",
      "1               NaN            呢***呐          PLUS会员           4   \n",
      "2               NaN            V***c            银牌会员           4   \n",
      "3               NaN            8***3            金牌会员           4   \n",
      "4               NaN            勇***来            钻石会员           4   \n",
      "5               NaN            j***ゞ            金牌会员           2   \n",
      "6               NaN       jinjiang70          PLUS会员           4   \n",
      "7               NaN            萌***9            钻石会员           4   \n",
      "8               NaN            N***l            银牌会员           4   \n",
      "9               NaN            孙***y            金牌会员           4   \n",
      "10              NaN            校***3            银牌会员           2   \n",
      "11              NaN  jd_584*****2099            银牌会员           4   \n",
      "12              NaN            小***1            金牌会员           4   \n",
      "13              NaN            j***h            钻石会员           4   \n",
      "14              NaN            東***旯          PLUS会员           4   \n",
      "15              NaN            年***事          PLUS会员           2   \n",
      "16              NaN            j***d          PLUS会员           4   \n",
      "17              NaN            飞***8          PLUS会员           4   \n",
      "18              NaN            x***5          PLUS会员           4   \n",
      "19              NaN            j***4            银牌会员           4   \n",
      "20              NaN            j***r            银牌会员           4   \n",
      "21              NaN            SUN丶豪            金牌会员           2   \n",
      "22              NaN            j***l            银牌会员           4   \n",
      "23              NaN            令***龙            金牌会员           2   \n",
      "24              NaN            n-Y_Q            银牌会员           4   \n",
      "25              NaN              陈振行            钻石会员           4   \n",
      "26              NaN            f***e          PLUS会员           4   \n",
      "27              NaN            1***m          PLUS会员           4   \n",
      "28              NaN              狂小星          PLUS会员           2   \n",
      "29              NaN            s***麟            银牌会员           4   \n",
      "...             ...              ...             ...         ...   \n",
      "3607            NaN            澄***蛋            银牌会员           4   \n",
      "3608            NaN            全***柔            金牌会员           4   \n",
      "3609            NaN            吕***S            钻石会员           2   \n",
      "3610            NaN            j***f            银牌会员           4   \n",
      "3611            NaN            邢***8            铜牌会员           4   \n",
      "3612            NaN            k***n            银牌会员          21   \n",
      "3613            NaN            呆***岁            银牌会员           2   \n",
      "3614            NaN            j***t          PLUS会员           4   \n",
      "3615            NaN            安***3            银牌会员           2   \n",
      "3616            NaN            s***c            银牌会员           4   \n",
      "3617            NaN            语***量            金牌会员           4   \n",
      "3618            NaN            j***6            银牌会员           4   \n",
      "3619            NaN            天***1          PLUS会员           4   \n",
      "3620            NaN            z***g            钻石会员           2   \n",
      "3621            NaN            d***0            金牌会员           4   \n",
      "3622            NaN            j***w            银牌会员           4   \n",
      "3623            NaN            j***1            银牌会员           4   \n",
      "3624            NaN            1***5          PLUS会员           4   \n",
      "3625            NaN            8***m            金牌会员           0   \n",
      "3626            NaN            j***g          PLUS会员           0   \n",
      "3627            NaN            J***s          PLUS会员           4   \n",
      "3628            NaN            k***n          PLUS会员           4   \n",
      "3629            NaN            j***o            银牌会员           4   \n",
      "3630            NaN            j***0            钻石会员           2   \n",
      "3631            NaN            q***4            金牌会员           0   \n",
      "3632            NaN            1***m          PLUS会员           4   \n",
      "3633            NaN            j***2            铜牌会员           4   \n",
      "3634            NaN            二***5            金牌会员           0   \n",
      "3635            NaN            生***味            银牌会员           4   \n",
      "3636            NaN            心***神            银牌会员           4   \n",
      "\n",
      "      user_client_show is_mobile  days       reference_time after_days  \\\n",
      "0        来自京东iPhone客户端       1.0   4.0  2018-08-09 13:38:15        0.0   \n",
      "1       来自京东Android客户端       1.0   5.0  2018-05-22 09:32:37        0.0   \n",
      "2       来自京东Android客户端       1.0   3.0  2018-08-06 18:45:59        0.0   \n",
      "3       来自京东Android客户端       1.0   1.0  2018-07-20 06:14:02        0.0   \n",
      "4       来自京东Android客户端       1.0   2.0  2018-08-09 15:02:19        0.0   \n",
      "5        来自京东iPhone客户端       1.0   1.0  2017-11-11 00:05:52        0.0   \n",
      "6       来自京东Android客户端       1.0   8.0  2018-04-20 10:08:19        0.0   \n",
      "7       来自京东Android客户端       1.0   1.0  2018-04-03 20:54:06        0.0   \n",
      "8       来自京东Android客户端       1.0   5.0  2018-05-29 10:00:21        0.0   \n",
      "9       来自京东Android客户端       1.0   5.0  2017-09-15 10:08:03        0.0   \n",
      "10       来自京东iPhone客户端       1.0   2.0  2018-08-04 10:00:57        4.0   \n",
      "11      来自京东Android客户端       1.0  15.0  2018-05-22 20:30:15       15.0   \n",
      "12      来自京东Android客户端       1.0   1.0  2018-07-19 10:44:42        0.0   \n",
      "13      来自京东Android客户端       1.0  22.0  2018-07-18 12:06:15        0.0   \n",
      "14      来自京东Android客户端       1.0   3.0  2018-01-29 23:42:45        0.0   \n",
      "15       来自京东iPhone客户端       1.0  11.0  2018-07-12 22:46:07        0.0   \n",
      "16      来自京东Android客户端       1.0   1.0  2018-06-01 23:28:34        0.0   \n",
      "17      来自京东Android客户端       1.0   8.0  2018-04-27 10:12:49        8.0   \n",
      "18      来自京东Android客户端       1.0   5.0  2017-09-21 10:20:03        0.0   \n",
      "19      来自京东Android客户端       1.0   2.0  2018-08-04 10:24:11        0.0   \n",
      "20      来自京东Android客户端       1.0  14.0  2018-07-27 13:27:52        0.0   \n",
      "21       来自京东iPhone客户端       1.0   3.0  2018-07-16 08:38:41        0.0   \n",
      "22      来自京东Android客户端       1.0  15.0  2018-07-25 20:54:29        0.0   \n",
      "23       来自京东iPhone客户端       1.0   1.0  2017-10-27 20:48:48        0.0   \n",
      "24      来自京东Android客户端       1.0   1.0  2018-07-25 10:55:56        0.0   \n",
      "25      来自京东Android客户端       1.0   1.0  2018-03-08 10:03:45        0.0   \n",
      "26      来自京东Android客户端       1.0   2.0  2017-11-07 16:06:48        0.0   \n",
      "27      来自京东Android客户端       1.0   3.0  2018-08-11 21:48:51        0.0   \n",
      "28       来自京东iPhone客户端       1.0   1.0  2018-05-10 13:45:49       20.0   \n",
      "29      来自京东Android客户端       1.0   1.0  2018-08-08 04:58:13        0.0   \n",
      "...                ...       ...   ...                  ...        ...   \n",
      "3607    来自京东Android客户端       1.0   3.0  2018-07-11 16:41:02        0.0   \n",
      "3608    来自京东Android客户端       1.0   3.0  2018-08-10 21:49:27        0.0   \n",
      "3609     来自京东iPhone客户端       1.0   5.0  2017-09-22 08:01:10        0.0   \n",
      "3610    来自京东Android客户端       1.0   3.0  2018-05-01 09:28:18        0.0   \n",
      "3611    来自京东Android客户端       1.0   9.0  2018-07-14 21:05:43        0.0   \n",
      "3612            来自微信购物       0.0   4.0  2018-07-31 14:22:19        0.0   \n",
      "3613     来自京东iPhone客户端       1.0   5.0  2018-07-12 16:43:52        0.0   \n",
      "3614    来自京东Android客户端       1.0  14.0  2018-07-21 08:48:17        0.0   \n",
      "3615     来自京东iPhone客户端       1.0   0.0  2018-08-05 10:35:02        0.0   \n",
      "3616    来自京东Android客户端       1.0  18.0  2018-01-29 11:37:22        0.0   \n",
      "3617    来自京东Android客户端       1.0   1.0  2018-08-05 13:25:14        0.0   \n",
      "3618    来自京东Android客户端       1.0   1.0  2018-07-28 21:28:04        0.0   \n",
      "3619    来自京东Android客户端       1.0  59.0  2018-06-12 17:47:02        0.0   \n",
      "3620     来自京东iPhone客户端       1.0  50.0  2018-04-26 15:57:57        0.0   \n",
      "3621    来自京东Android客户端       1.0   3.0  2018-07-06 10:00:28        0.0   \n",
      "3622    来自京东Android客户端       1.0   2.0  2018-07-18 15:53:11        0.0   \n",
      "3623    来自京东Android客户端       1.0   4.0  2018-07-11 23:19:50        0.0   \n",
      "3624    来自京东Android客户端       1.0   8.0  2018-08-02 11:35:47        0.0   \n",
      "3625               NaN       0.0   4.0  2018-07-20 00:21:07        0.0   \n",
      "3626               NaN       0.0   8.0  2018-07-05 11:55:11        0.0   \n",
      "3627    来自京东Android客户端       1.0  23.0  2018-07-09 15:39:06        0.0   \n",
      "3628    来自京东Android客户端       1.0  26.0  2018-06-14 20:27:02        0.0   \n",
      "3629    来自京东Android客户端       1.0   2.0  2018-08-05 09:04:40        0.0   \n",
      "3630     来自京东iPhone客户端       1.0  54.0  2018-05-22 09:56:24        0.0   \n",
      "3631               NaN       0.0   2.0  2018-06-09 14:15:29        0.0   \n",
      "3632    来自京东Android客户端       1.0   3.0  2018-08-11 21:48:51        0.0   \n",
      "3633    来自京东Android客户端       1.0   3.0  2018-08-05 15:17:18        0.0   \n",
      "3634               NaN       0.0  17.0  2018-01-08 11:21:00       50.0   \n",
      "3635    来自京东Android客户端       1.0  30.0  2018-07-14 00:38:39        0.0   \n",
      "3636                来自       NaN   NaN                  NaN        NaN   \n",
      "\n",
      "                                     after_user_comment  \n",
      "0                                            NO_MESSAGE  \n",
      "1                                            NO_MESSAGE  \n",
      "2                                            NO_MESSAGE  \n",
      "3                                            NO_MESSAGE  \n",
      "4                                            NO_MESSAGE  \n",
      "5                                            NO_MESSAGE  \n",
      "6                                            NO_MESSAGE  \n",
      "7                                            NO_MESSAGE  \n",
      "8                                            NO_MESSAGE  \n",
      "9                                            NO_MESSAGE  \n",
      "10           试用了一下还不错的，运行速度可以，不卡，待机也不错。外表更使颜控无法抗拒，总之完美！  \n",
      "11                                    手机是我目前为止用过最好用的手机了  \n",
      "12                                           NO_MESSAGE  \n",
      "13                                           NO_MESSAGE  \n",
      "14                                           NO_MESSAGE  \n",
      "15                                           NO_MESSAGE  \n",
      "16                                           NO_MESSAGE  \n",
      "17    听说耗电 从11点拿回来66个电，开始下载软件游戏 中间接几个电话玩到下午4点还剩19个电。...  \n",
      "18                                           NO_MESSAGE  \n",
      "19                                           NO_MESSAGE  \n",
      "20                                           NO_MESSAGE  \n",
      "21                                           NO_MESSAGE  \n",
      "22                                           NO_MESSAGE  \n",
      "23                                           NO_MESSAGE  \n",
      "24                                           NO_MESSAGE  \n",
      "25                                           NO_MESSAGE  \n",
      "26                                           NO_MESSAGE  \n",
      "27                                           NO_MESSAGE  \n",
      "28                                           此用户未填写评价内容  \n",
      "29                                           NO_MESSAGE  \n",
      "...                                                 ...  \n",
      "3607                                         NO_MESSAGE  \n",
      "3608                                         NO_MESSAGE  \n",
      "3609                                         NO_MESSAGE  \n",
      "3610                                         NO_MESSAGE  \n",
      "3611                                         NO_MESSAGE  \n",
      "3612                                         NO_MESSAGE  \n",
      "3613                                         NO_MESSAGE  \n",
      "3614                                         NO_MESSAGE  \n",
      "3615                                         NO_MESSAGE  \n",
      "3616                                         NO_MESSAGE  \n",
      "3617                                         NO_MESSAGE  \n",
      "3618                                         NO_MESSAGE  \n",
      "3619                                         NO_MESSAGE  \n",
      "3620                                         NO_MESSAGE  \n",
      "3621                                         NO_MESSAGE  \n",
      "3622                                         NO_MESSAGE  \n",
      "3623                                         NO_MESSAGE  \n",
      "3624                                         NO_MESSAGE  \n",
      "3625                                         NO_MESSAGE  \n",
      "3626                                         NO_MESSAGE  \n",
      "3627                                         NO_MESSAGE  \n",
      "3628                                         NO_MESSAGE  \n",
      "3629                                         NO_MESSAGE  \n",
      "3630                                         NO_MESSAGE  \n",
      "3631                                         NO_MESSAGE  \n",
      "3632                                         NO_MESSAGE  \n",
      "3633                                         NO_MESSAGE  \n",
      "3634                                         挺实用的。给家人用。  \n",
      "3635                                         NO_MESSAGE  \n",
      "3636                                                NaN  \n",
      "\n",
      "[3637 rows x 21 columns]\n",
      "------------------------------------------------------------\n"
     ]
    }
   ],
   "source": [
    "#缺失值审核\n",
    "def MissingView(data):\n",
    "    na_cols = data.isnull().any(axis=0)  # 查看每一列是否具有缺失值\n",
    "    print ('NA Cols:')\n",
    "    print (na_cols)  # 查看具有缺失值的列\n",
    "    print ('-' * 30)\n",
    "    na_lines = data.isnull().any(axis=1)  # 查看每一行是否具有缺失值\n",
    "    print ('NA Recors:')\n",
    "    print ('Total number of NA lines is: {0}'.format(na_lines.sum()))  # 查看具有缺失值的行总记录数\n",
    "    print (data[na_lines])  # 只查看具有缺失值的行信息\n",
    "    print ('-' * 60)\n",
    "    \n",
    "MissingView(data)"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "#### 存在\"user_province\"、\"user_level_name\"字段存在缺失的情况。两个字段不影响后续分析，不做相关处理。"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "## 3、文本评分分布情况"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 6,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "<matplotlib.axes._subplots.AxesSubplot at 0x1e534acd160>"
      ]
     },
     "execution_count": 6,
     "metadata": {},
     "output_type": "execute_result"
    },
    {
     "data": {
      "image/png": "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\n",
      "text/plain": [
       "<Figure size 432x288 with 1 Axes>"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    }
   ],
   "source": [
    "data['score'].value_counts()\n",
    "sns.countplot(data=data,x='score')"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "#### 可以看出评论文本出现好评和差评不均衡情况，其中好评远大于差"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "## 4、评论发布时间分布情况"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 7,
   "metadata": {},
   "outputs": [],
   "source": [
    "#数据转化\n",
    "data['creation_time'] = pd.to_datetime(data['creation_time'])\n",
    "data['reference_time'] = pd.to_datetime(data['reference_time'])\n",
    "\n",
    "data['year'] = data.creation_time.dt.year\n",
    "data['month'] = data.creation_time.dt.month\n",
    "data['weekday'] = data.creation_time.dt.weekday\n",
    "data['hour'] = data.creation_time.dt.hour"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 8,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "image/png": "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\n",
      "text/plain": [
       "<Figure size 1008x288 with 1 Axes>"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    }
   ],
   "source": [
    "#观测每周评论数数据变化情况\n",
    "fig1, ax1=plt.subplots(figsize=(14,4))\n",
    "df=data.groupby(['hour', 'weekday']).count()['nickname'].unstack()\n",
    "df.plot(ax=ax1, style='-.')\n",
    "plt.show()"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "#### 每周一到周日用户评论情况趋势相对相同，用户活跃时间主要集中在8点到20点时段。深夜活跃度低可能大部分用户在睡觉"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "## 5、评论长度与评分关系情况"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 9,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "(0, 600)"
      ]
     },
     "execution_count": 9,
     "metadata": {},
     "output_type": "execute_result"
    },
    {
     "data": {
      "image/png": "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\n",
      "text/plain": [
       "<Figure size 432x288 with 1 Axes>"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    }
   ],
   "source": [
    "#评论的长短可以看出评论者的认真程度\n",
    "data['content_len'] = data['content'].str.len()\n",
    "fig2, ax2=plt.subplots()\n",
    "sns.boxplot(x='score',y='content_len',data=data, ax=ax2)\n",
    "ax2.set_ylim(0,600)"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "#### 可以看出1星的用户评论长，说明不满意的用户提供更多信息"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "# 三、文本预处理"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 10,
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "<class 'pandas.core.frame.DataFrame'>\n",
      "RangeIndex: 3637 entries, 0 to 3636\n",
      "Data columns (total 2 columns):\n",
      "content    3637 non-null object\n",
      "score      3637 non-null int64\n",
      "dtypes: int64(1), object(1)\n",
      "memory usage: 56.9+ KB\n"
     ]
    }
   ],
   "source": [
    "#提取需处理的数据及标签\n",
    "data1 = data[['content', 'score']]\n",
    "data1.info()"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 11,
   "metadata": {},
   "outputs": [],
   "source": [
    "#获取停用词\n",
    "with open(r'D:\\分析实战\\京东评论文本挖掘\\data\\哈工大停用词表.txt', encoding='gbk') as file:\n",
    "    word_list = [x.strip() for x in file.readlines()]"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "#### 1、构建情感标签， 京东评分为1-5分，对于我们做的情感分析作用不大，可以重新划分标签，作为训练模型的语料。即划分方式为： 划分为4-5分好评，1-3分差评。"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 12,
   "metadata": {},
   "outputs": [
    {
     "name": "stderr",
     "output_type": "stream",
     "text": [
      "C:\\LOCATION\\development tool\\shared\\Anaconda3_64\\lib\\site-packages\\ipykernel_launcher.py:7: SettingWithCopyWarning: \n",
      "A value is trying to be set on a copy of a slice from a DataFrame.\n",
      "Try using .loc[row_indexer,col_indexer] = value instead\n",
      "\n",
      "See the caveats in the documentation: http://pandas.pydata.org/pandas-docs/stable/indexing.html#indexing-view-versus-copy\n",
      "  import sys\n"
     ]
    }
   ],
   "source": [
    "def SetLabel(score):\n",
    "    if score >=4:\n",
    "        return 1 \n",
    "    else:\n",
    "        return 0\n",
    "    \n",
    "data1['score'] = data1['score'].map(lambda x:SetLabel(x))"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "#### 2、中文分词：著名的nltk包对分词有良好的效果，劣势在于对中文不友好。对此选用jieba包进行处理。这里我们把文本通过空格形式分词。为了更好了解jieba中文分词详细用法，提供下友情链接做参考：https://github.com/fxsjy/jieba"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 13,
   "metadata": {},
   "outputs": [
    {
     "name": "stderr",
     "output_type": "stream",
     "text": [
      "Building prefix dict from the default dictionary ...\n",
      "Loading model from cache C:\\Users\\zero\\AppData\\Local\\Temp\\jieba.cache\n",
      "Loading model cost 0.735 seconds.\n",
      "Prefix dict has been built succesfully.\n",
      "C:\\LOCATION\\development tool\\shared\\Anaconda3_64\\lib\\site-packages\\ipykernel_launcher.py:2: SettingWithCopyWarning: \n",
      "A value is trying to be set on a copy of a slice from a DataFrame.\n",
      "Try using .loc[row_indexer,col_indexer] = value instead\n",
      "\n",
      "See the caveats in the documentation: http://pandas.pydata.org/pandas-docs/stable/indexing.html#indexing-view-versus-copy\n",
      "  \n"
     ]
    }
   ],
   "source": [
    "# 分词函数\n",
    "data1['seg_words'] = data1['content'].apply(lambda x: ' '.join(jieba.cut(x)))"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "#### 3、特征选取：拆分好的文本不能直接扔去建模，还需要把文本转化为稀疏矩阵。主要手段嘛，词袋模型、TF-IDF等，这里主要采用TF-IDF方法。附上链接了解下TF-IDF基本原理：http://www.ruanyifeng.com/blog/2013/03/tf-idf.html"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 14,
   "metadata": {},
   "outputs": [
    {
     "name": "stderr",
     "output_type": "stream",
     "text": [
      "C:\\LOCATION\\development tool\\shared\\Anaconda3_64\\lib\\site-packages\\sklearn\\feature_extraction\\text.py:301: UserWarning: Your stop_words may be inconsistent with your preprocessing. Tokenizing the stop words generated tokens ['0', '1', '10', '11', '12', '13', '14', '15', '16', '17', '18', '19', '1a', '1b', '1c', '1d', '1e', '1f', '1g', '1h', '1i', '1o', '2', '21', '210', '22', '23', '24', '25', '26', '27', '28', '2a', '2b', '2c', '2d', '2e', '2f', '2g', '2h', '2i', '2j', '3', '31', '310', '3a', '3b', '3c', '3d', '3e', '3f', '3g', '3h', '4', '4a', '4b', '4c', '4d', '4e', '5', '5a', '5b', '5d', '5e', '5f', '6', '7', '8', '9', 'C', '_', 'a', 'b', 'c', 'e', 'f', 'iii', 'l', 'lex', 'li', 'ng昉', 'r', 'zxfitl', 'β', 'δ', 'λ', 'ξ', 'ψ', 'в', '元', '八', '吨', '数', '日', '末'] not in stop_words.\n",
      "  'stop_words.' % sorted(inconsistent))\n"
     ]
    }
   ],
   "source": [
    "#数据集拆分为语料、标签\n",
    "terms = data1['seg_words'].tolist()\n",
    "y = data1['score'].tolist()\n",
    "\n",
    "from sklearn.feature_extraction.text import TfidfVectorizer as TFIV\n",
    "# 初始化TFIV对象，去停用词，加2元语言模型  \n",
    "tfv = TFIV(min_df=3,  max_features=None, strip_accents='unicode', analyzer='word',token_pattern=r'\\w{1,}',\n",
    "           ngram_range=(1, 2), use_idf=1,smooth_idf=1,sublinear_tf=1, stop_words = word_list)  \n",
    "\n",
    "tfv.fit(terms)\n",
    "X_all = tfv.transform(terms)"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "#### 4、分类模型前的特征选择：将文本进行特征表示后，还进行特征选择，选出较优的特征。这一步操作可以有效特省模型性能，改善模型。本次模型选用卡方检验选取100个特征。其他特征选择方法不展开讲述，此处搬运工附上链接供学习。https://blog.csdn.net/Bryan__/article/details/51607215"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 15,
   "metadata": {},
   "outputs": [],
   "source": [
    "#特征选择\n",
    "from sklearn.feature_selection import SelectKBest, chi2\n",
    "select_feature_model = SelectKBest(chi2, k=100)    ##卡方检验来选择100个最佳特征\n",
    "X_all = select_feature_model.fit_transform(X_all, y)  #减少特征的数量，达到降维的效果，从而使模型的方法能力更强，降低过拟合的风险"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "# 四、模型建立与选择"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "使用机器学习去做情感分析。特征值是评论文本经过TF-IDF处理的向量，标签值评论分类为1（好评）、0（差评）。主要选取模型有：朴素贝叶斯、逻辑回归、SVM。对比下模型拟合效果。"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 16,
   "metadata": {},
   "outputs": [],
   "source": [
    "#切分测试集、训练集\n",
    "from sklearn.model_selection import train_test_split\n",
    "x_train, x_test, y_train, y_test = train_test_split(X_all, y, random_state=0, test_size=0.25)"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "## 1、朴素贝叶斯"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 17,
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "贝叶斯分类器20折交叉验证得分:  0.42522380291464257\n"
     ]
    }
   ],
   "source": [
    "model_NB = MNB()\n",
    "model_NB.fit(x_train, y_train) #特征数据直接灌进来\n",
    "MNB(alpha=1.0, class_prior=None, fit_prior=True) # ”alpha“是平滑参数，不需要掌握哈。\n",
    "\n",
    "from sklearn.model_selection import cross_val_score\n",
    "#评估预测性能，减少过拟合\n",
    "print(\"贝叶斯分类器20折交叉验证得分: \", np.mean(cross_val_score(model_NB, x_train, y_train, cv=20, scoring='roc_auc')))   "
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "## 2、逻辑回归"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 18,
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "20折交叉验证得分:  0.7847334991132702\n"
     ]
    },
    {
     "name": "stderr",
     "output_type": "stream",
     "text": [
      "C:\\LOCATION\\development tool\\shared\\Anaconda3_64\\lib\\site-packages\\sklearn\\linear_model\\logistic.py:433: FutureWarning: Default solver will be changed to 'lbfgs' in 0.22. Specify a solver to silence this warning.\n",
      "  FutureWarning)\n",
      "C:\\LOCATION\\development tool\\shared\\Anaconda3_64\\lib\\site-packages\\sklearn\\linear_model\\logistic.py:433: FutureWarning: Default solver will be changed to 'lbfgs' in 0.22. Specify a solver to silence this warning.\n",
      "  FutureWarning)\n"
     ]
    }
   ],
   "source": [
    "# 折腾一下逻辑回归\n",
    "from sklearn.linear_model import LogisticRegression as LR\n",
    "from sklearn.model_selection import GridSearchCV\n",
    "\n",
    "model_LR = LogisticRegression(C=.01) # C是正则化系数。\n",
    "model_LR.fit(x_train, y_train)\n",
    "print(\"20折交叉验证得分: \", np.mean(cross_val_score(model_LR, x_train, y_train, cv=20, scoring='roc_auc')))"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "## 3、SVM"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 19,
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "20折交叉验证得分:  0.827218077723803\n"
     ]
    }
   ],
   "source": [
    "from sklearn.svm import LinearSVC\n",
    "model_SVM = LinearSVC(C=.01) # C是正则化系数。\n",
    "model_SVM.fit(x_train, y_train)\n",
    "print(\"20折交叉验证得分: \", np.mean(cross_val_score(model_SVM, x_train, y_train, cv=20, scoring='roc_auc')))"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "## 4、其他模型效果评估情况"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "插播一下模型效果评估方法主要有准确率(Accuracy)、精确率(Precision)、召回率(Recall)、F1-score、ROC、AUC。最好采用roc_auc评估方法，因为其他方法只能片面评估效果，不能全面衡量模型性能。\n",
    "下面尝试下使用cross_val_score默认方法尝试评估结果KFold或者stratifiedKFold。了解这几个效果评估方法得区别，看下链接：https://blog.csdn.net/zuolixiangfisher/article/details/81328297"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 20,
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "20折交叉验证得分:  0.9629667052476341\n"
     ]
    },
    {
     "name": "stderr",
     "output_type": "stream",
     "text": [
      "C:\\LOCATION\\development tool\\shared\\Anaconda3_64\\lib\\site-packages\\sklearn\\linear_model\\logistic.py:433: FutureWarning: Default solver will be changed to 'lbfgs' in 0.22. Specify a solver to silence this warning.\n",
      "  FutureWarning)\n",
      "C:\\LOCATION\\development tool\\shared\\Anaconda3_64\\lib\\site-packages\\sklearn\\linear_model\\logistic.py:433: FutureWarning: Default solver will be changed to 'lbfgs' in 0.22. Specify a solver to silence this warning.\n",
      "  FutureWarning)\n"
     ]
    }
   ],
   "source": [
    "model_LR = LogisticRegression(C=.01) # C是正则化系数。\n",
    "model_LR.fit(x_train, y_train)\n",
    "print(\"20折交叉验证得分: \", np.mean(cross_val_score(model_LR, x_train, y_train, cv=20)))"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 21,
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "20折交叉验证得分:  0.9629667052476341\n"
     ]
    }
   ],
   "source": [
    "model_SVM = LinearSVC(C=.01) # C是正则化系数。\n",
    "model_SVM.fit(x_train, y_train)\n",
    "print(\"20折交叉验证得分: \", np.mean(cross_val_score(model_SVM, x_train, y_train, cv=20)))"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "三种模型拟合并输出结果下，可以得到SVM分类效果最佳"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "## 5、混淆矩阵评估分类模型预测效果"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 22,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "array([[  0,  26],\n",
       "       [  0, 884]], dtype=int64)"
      ]
     },
     "execution_count": 22,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "from sklearn.metrics import confusion_matrix\n",
    "y_predict = model_SVM.predict(x_test)\n",
    "cm = confusion_matrix(y_test, y_predict)\n",
    "cm"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "可以看出，负类的预测非常不准，准确预测为负类的0%，应该是由于数据不平衡导致的，模型的默认阈值为输出值的中位数。比如逻辑回归的输出范围为[0,1]，当某个样本的输出大于0.5就会被划分为正例，反之为反例。在数据的类别不平衡时，采用默认的分类阈值可能会导致输出全部为正例，产生虚假的高准确度，导致分类失败。 处理样本不均衡问题的方法，首先可以选择调整阈值，使得模型对于较少的类别更为敏感，或者选择合适的评估标准，比如ROC或者F1，而不是准确度（accuracy）。另外一种方法就是通过采样（sampling）来调整数据的不平衡。其中欠采样抛弃了大部分正例数据，从而弱化了其影响，可能会造成偏差很大的模型，同时，数据总是宝贵的，抛弃数据是很奢侈的。另外一种是过采样，下面我们就使用过采样方法来调整。"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "# 五、过采样后，进行建模"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "SMOTE（Synthetic minoritye over-sampling technique,SMOTE），是在局部区域通过K-近邻生成了新的反例。对SMOTE感兴趣的同学可以看下这篇文章https://www.jianshu.com/p/ecbc924860af"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 23,
   "metadata": {},
   "outputs": [],
   "source": [
    "def sample_balabce(X, y):\n",
    "    from imblearn.over_sampling import SMOTE\n",
    "    model_smote = SMOTE()\n",
    "    x_smote_resamples, y_smote_resamples = model_smote.fit_sample(X, y)\n",
    "    return x_smote_resamples, y_smote_resamples\n",
    "\n",
    "rex, rey = sample_balabce(X_all, y)\n",
    "rex_train, rex_test, rey_train, rey_test = train_test_split(rex, rey, \n",
    "                random_state=0, test_size=0.25)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 24,
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "20折交叉验证得分:  0.8555073492492292\n"
     ]
    }
   ],
   "source": [
    "#使用过采样样本(简单复制)进行模型训练，并查看准确率\n",
    "from sklearn.svm import LinearSVC\n",
    "model_SVM = LinearSVC(C=.01) # C是正则化系数。\n",
    "model_SVM.fit(rex_train, rey_train)\n",
    "print(\"20折交叉验证得分: \", np.mean(cross_val_score(model_SVM, rex_train, rey_train, cv=20, scoring='roc_auc')))"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 25,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "array([[556, 322],\n",
       "       [141, 736]], dtype=int64)"
      ]
     },
     "execution_count": 25,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "#查看此时的混淆矩阵\n",
    "rey_predict = model_SVM.predict(rex_test)\n",
    "cm = confusion_matrix(rey_test, rey_predict)\n",
    "cm"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "通过过采样方法后SVM得效果有所上升，负样本的识别率大幅度上升。"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "# 六、后续优化方向"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "1、采用更复杂的模型，如神经网络\n",
    "2、模型调参\n",
    "3、构建行业词典等"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "metadata": {},
   "outputs": [],
   "source": []
  }
 ],
 "metadata": {
  "kernelspec": {
   "display_name": "Python 3",
   "language": "python",
   "name": "python3"
  },
  "language_info": {
   "codemirror_mode": {
    "name": "ipython",
    "version": 3
   },
   "file_extension": ".py",
   "mimetype": "text/x-python",
   "name": "python",
   "nbconvert_exporter": "python",
   "pygments_lexer": "ipython3",
   "version": "3.6.7"
  }
 },
 "nbformat": 4,
 "nbformat_minor": 2
}
